vs2022创建dll教程[vs怎么创建c] |
您所在的位置:网站首页 › vs2022 dll › vs2022创建dll教程[vs怎么创建c] |
DLL格式的文件怎么创建
DLL文件是动态链接库。一般情况下程序里有方程来把不同的功能分类,下面这个例子就是算长方形面积的。但是当你的程序会很多次用到这个方程的时候,dll可以吧方程存起来给不同程序反复使用。(比如同是有两个程序都需要算长方形面积) 另外,dll最大优势就是这些文件都是在程序运行的时候才会被调用。而不是像一般方程都是在编译的时候调用的。 以C++为例,另外我就当你对dll是什么和基本编程已经有了解了。 最简单创建dll的方法就是用VC++.net 1.先新创建一个 WIN32程序 的project,给个名字(dllexample) 2.在第2步点程序设置,选dll,点完成 3.在dllexample.cpp里面,写你要的function.这里是一个算长方形面积的function. 在function定义之前的extern "C" __declspec(dllexport)就告诉编译器这个function是可以给其他程序在runtime用的。 ********************************************************* // dllexample.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" extern "C" __declspec(dllexport)double BoxArea(double Length,double Width); BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } double BoxArea(double Length, double Width){ return Length * Width; } **************************************************************** 4. 在主菜单选编译porject 5. 在你project存的地方的debug文件夹里就应该可以看见dllexample.dll和dllexample.lib两个文件了 6.接下来你就可以在你的程序里用 extern "C" __declspec(dllimport)来执行dllexample.dll里面的function了。(*.dll和*.lib必须和*.exe在同一个文件夹里。) 一个包含很多头文件源文件的项目,如何生成dll?1.源代码中的 __declspec(dllexport) .2.def 文件中的 EXPORTS 语句 3.LINK 命令中的 /EXPORT 规范 另一种生成 DLL 的方法是使用 LIBRARY 模块定义语句。 将 /BASE 和 /DLL 选项连用等效于 LIBRARY 语句。 不要在开发环境中指定该选项;该选项只在命令行上可用。 在用“应用程序向导”创建 DLL 项目时设置该选项。 请注意,如果您在预备步骤中创建了导入库,则在创建 .dll 之前,生成 .dll 时必须传递生成导入库时所传递的同一组对象文件。 在 Visual Studio 开发环境中设置此链接器选项 打开项目的“属性页”对话框。 有关详细信息,请参见设置 Visual C++ 项目属性。 单击“配置属性”文件夹。 单击“常规”属性页。 修改“配置类型”属性。 VS2010怎么创建DLL工程1 双击打开vs 在电脑上运行visual studio2010软件。 2 新建工程 在弹出的窗口中点击文件,选择新建,然后选择项目。 3 选择win32模板 在弹出的窗口中的已安装模板中选择win32,然后在右侧选中win32项目。 4 设置工程名字和存储路径 在下面的名称处输入工程名,位置处输入工程在磁盘的位置,然后点击确定。 5 下一步 在弹出的窗口中点击下一步 。 6 选择DLL选项 在弹出的窗中选中DLL,然后点击完成。 7 DLL新建完成 弹出的解决方案资源管理器中就是我们新建的DLL工程。 如何注册dll文件?注册DLL文件的步骤如下: 1、点击开始-运行 regsvr32注册dll文件教程图1 2、假如你的dll文件放在D盘根目录下,那么输入regsvr32 D:\aaa.dll 点击确定即可 3、注意dll文件放置位置要求不高,为了方便可以直接放在C盘根目录下。 4、直接在运行窗口中执行命令也可以达到同样的效果: regsvr32 c:\Windows\system32\comdlg32.ocx 5、注意在64位的系统中,需要在运行中执行如下命令: regsvr32 c:\Windows\SysWOW64\comdlg32.ocx [img]【VC++】如何建立DLL啊建立DLL文件: 1.在VC6中新建MFC Appwizard(dll)工程。 2.添加一个新类(CMyClass)。 3.在类的头文件里加一句话,用来发布:Class _declspec(dllexport) CMyClass。 4.编译后在Debug里找.dll和.lib文件。 5.调用方法:把这两个文件考入要调用的工程根目录下,头文件里引用: #include "MyClass.h" #pragma comment(lib,"Dll.lib") 试试吧,没人指导是挺难的,我也是新手,以后多交流。 C#中的DLL文件怎么创建使用C#生成dll文件并调用 一、创建dll文件: 例如生成一个md5编码判断状态的文件,即,输入一个字符串(string A)和一个32位md5编码(string B),判断此字符串A对应的32位md5编码是否与B相等,如果相等返回true,否则返回false。 打开VS 2005,“文件”--》“新建”--“项目”,选择“Windows 控件库”,命名后点击“确定”,在“UserControl1.cs”中输入以下代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; using System.Text; using System.Security.Cryptography; namespace md5 { public partial class Program : UserControl { #region MD5 32位加密:GetMd5Str32 /// summary /// 32位MD5加密 /// /summary /// param name="strSource"待加密字串/param /// returns加密后的字串/returns public static string GetMd5Str32(string strSource) { byte[] bytes = Encoding.ASCII.GetBytes(strSource); byte[] hashValue = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(bytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i 16; i++) { sb.Append(hashValue[i].ToString("x2")); } return sb.ToString().ToUpper(); } #endregion #region 核对md5编码是否一致:CheckMd5String() /// summary /// 核对md5编码是否一致 /// /summary /// param name="ConvertString"/param /// returns如果一致返回true,否则返回false/returns /// public static bool CheckMd5String(string str1, string str2) { string md5String = str1; //需要验证的字符串 string md5DbString = str2; //需要核对的32位md5编码 int result = string.Compare(md5.Program.GetMd5Str32(str1), md5DbString, true); if (result == 0) { return true; } else { return false; } } #endregion } } 修改“UserControl1.Designer.cs”中的命名空间为“md5”,方法为“Program”,即可生成dll文件。 在...\bin\Debug文件假下,可以找到相应的dll文件。 二、部署dll流程: 首先把dll文件放到应用程序...\bin\Debug\下; 然后在解决方案中添加引用:右键鼠标--添加引用--浏览--选择dll放置路径后点击“确定”。 注意:要在应用文件头处使用using md5;命令。 测试应用程序代码,如下:Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using md5; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string str1 = textBox1.Text.ToString(); string md5String = textBox2.Text.ToString(); textBox3.Text = md5.Program.GetMd5Str32(str1); textBox4.Text = md5.Program.CheckMd5String(str1, md5String).ToString(); } private void button2_Click(object sender, EventArgs e) { this.Close(); } } } 三、注意点: 1、在C#应用程序开发过程中,加载dll文件时,报错“未能加载文件或程序集“md5, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。”,请指点一下是什么原因? 解决:这是因为加载dll的路径问题,正确加载方式为:在“解决方案”的“引用”文件上右击鼠标,选择“添加引用”---》在“浏览”选项卡中添加引用(注意:自己定义的dll文件不能在“.NET”选项卡中添加。) ------------------------------------------------------------------------------------------------------------------ c#生成DLL文件,内部函数的问题 用C#编写一组处理XML文档的代码,由于要求生成DLL文件,并由外部的其他工具访问动态库中的文件, 但是用Dependency Walker检测我生成的这个DLL文件没有显示任何的函数,以前没做过这方面的东西,求教了 代码如下: using System; using System.IO; using System.Xml; public class Sample { public static void Main() { DeleteArg(); } static void DeleteArg() { XmlDocument doc = new XmlDocument(); doc.Load(@"c:\\data1.xml"); XmlNode root = doc.DocumentElement; XmlNode Node1; XmlNodeList nodeList = doc.SelectSingleNode("/Entity/Columns").ChildNodes; foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute("Name") == "SysModuleID") { xe.RemoveAll(); //xe.RemoveAttribute("Name");//删除Name属性 } } doc.Save("c:\\data1.xml");//保存这个文档到文件中 } } 以上代码实现删除XML文件中某一节点的功能,如何在生成DLL后能够使用检测工具检测出DeleteArg函数, 使用Dependency Walker没检测出该函数是不是以为着这个动态库文件不能被调用. ---- 因为.net的程序不是这样把函数放在导出表的, 我记得.net做的dll只导出了一个_CorDllMain的方法, 所以用Dependency Walker是看不出来的. 如果你想看.net做的dll导出了什么内容,可以用反射查看元数据 ---- 生成这个DLL库文件,是想要别的工具运行这个动态库文件,实现DELETEARG()这个函数的功能 ---- 可以的 ---- 你上面的代码不是生成DLL的,而是一个控制台应用程序. 要想创建动态库(DLL),在新建项目窗口中选择"类库", 默认的代码是这样的: using System; using System.Collections.Generic; using System.Text; namespace ClassLibrary2 { public class Class1 { } } // 然后添加你的代码.最后代码如下: using System; using System.Collections.Generic; using System.Text; using System.Xml; namespace ClassLibrary2 { public class Class1 { public void DeleteArg() { XmlDocument doc = new XmlDocument(); doc.Load(@"c:\\data1.xml"); XmlNode root = doc.DocumentElement; XmlNode Node1; XmlNodeList nodeList = doc.SelectSingleNode("/Entity/Columns").ChildNodes; foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; if (xe.GetAttribute("Name") == "SysModuleID") { xe.RemoveAll(); //xe.RemoveAttribute("Name");//删除Name属性 } } doc.Save("c:\\data1.xml");//保存这个文档到文件中 } } } 最后编译一下就可以, 在Debug文件夹下回产生一个dll文件,最后在需要的工程里,将这个dll文件引进进去就可以用 关于vs2022创建dll教程和vs怎么创建c的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |